<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>变量提升与函数提提升</title>
</head>
<body>
    
<!-- 
    1. 变量声明提升
        通过var 定义（声明）的变量，在定义语句之前就可以访问到
        值：undefined
    2. 函数声明提升
        通过function 声明的函数，在之前就可以直接调用
        值：函数定义（对象）
    3. 问题：变量提升和函数提升是如何产生的？
 -->
<script type="text/javascript">

    /*
        面试题： 输出  undefined 
    */
    var a = 3

    function fn(){
        console.log(a)
        var a = 4
    }
    fn()

    console.log(b); // b = undefined
    var b = 5

    fn2() // 可调用，函数提升
    fn3() // 不能调用，变量提升
    
    function fn2(){
        console.log('fn2()')
    }
    var fn3 = function(){
        console.log(fn3())
    }
</script>
</body>
</html>